package ca.qc.bdeb.jeuxdesboites.model;

import ca.qc.bdeb.utilitaires.Direction;
import ca.qc.bdeb.jeuxdesboites.commun.IDJoueurs;
import java.util.ArrayList;

/**
 * @author Eric Wenaas
 */
final class Boite {

    private boolean directionsFermees[];
    private IDJoueurs proprietaire; 
    
    Boite() {
        directionsFermees = new boolean[4];
        proprietaire = null;
    }
    
    void setFermeeDirection(Direction aDirection, boolean value) {
        directionsFermees[aDirection.ordinal()] = value;
    }
    
    boolean isFermeeDirection(Direction aDirection) {
        return directionsFermees[aDirection.ordinal()];
    }
    
    void setProprietaire(IDJoueurs nouveauProprietaire) {
        proprietaire = nouveauProprietaire;
    }
    
    IDJoueurs getProprietaire() {
        return proprietaire;
    }

    boolean isFermee() {
        boolean fermee = true;
        int indice = 0;
        while (fermee && indice < directionsFermees.length) {
            fermee = directionsFermees[indice];
            indice++;
        }
        return fermee;
    }

    int getNombreDirectionsFermes() {
        int nombre = 0;
        for (int i=0; i<directionsFermees.length; i++) {
            if (directionsFermees[i]) {
                nombre++;
            }
        }
        return nombre;
    }
    
    ArrayList<Direction> obtenirOuvertures() {
        ArrayList<Direction> directionsOuvertes = new ArrayList<>();
        for (Direction d : Direction.values()) {
            if (! isFermeeDirection(d)) {
                directionsOuvertes.add(d);
            }
        }
        return directionsOuvertes;
    }
}
